/*
 * @Author: Tendo 
 * @Date: 2022-03-22 16:15:29 
 * @Last Modified by:   Tendo 
 * @Last Modified time: 2022-03-22 16:15:29 
 */
/**
 * @param {number} n
 * @return {number}
 */
 var integerBreak = function(n) {
    // 确定dp数组（dp table）以及下标的含义
    let dp = new Array(n+1).fill(1)
    // dp的初始化
    dp[2] = 1
    // 确定遍历顺序
    for (let i = 3; i <= n; i++) {
        for (let j = 1; j <= i - 1; j++) {
            // 确定递推公式
            // 对于 i-j 这部分可以拆或不拆，不拆就是 i-j，拆就是 dp[i-j]
            dp[i] = Math.max(dp[i], (i - j) * j, dp[i - j] * j)
        }
    }
    return dp[n]
};

